/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
**   * Redistributions of source code must retain the above copyright
**     notice, this list of conditions and the following disclaimer.
**   * Redistributions in binary form must reproduce the above copyright
**     notice, this list of conditions and the following disclaimer in
**     the documentation and/or other materials provided with the
**     distribution.
**   * Neither the name of The Qt Company Ltd nor the names of its
**     contributors may be used to endorse or promote products derived
**     from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/

#include "mainwindow.h"
#include "stylesheeteditor.h"
#include "../swidgets/SwitchButton.h"
#include <QMessageBox>
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    ui.countryLabel->setFont(qApp->font());
    ui.nameLabel->setProperty("class", "mandatory QLabel");

    QFontInfo fi = ui.countryLabel->fontInfo();
    ui.label->setText(ui.label->text() + "\r\n" + fi.family());

    styleSheetEditor = new StyleSheetEditor(this);

    statusBar()->addWidget(new QLabel(tr("Ready")));

    connect(ui.exitAction, &QAction::triggered, qApp, &QApplication::quit);
    connect(ui.aboutQtAction, &QAction::triggered, qApp, &QApplication::aboutQt);
    connect(ui.horizontalSlider, &QSlider::valueChanged, this, &MainWindow::on_slider_changed);

    m_btn = new SwitchButton(true, this);
    ui.gridLayout->addWidget(m_btn, 8, 0, 1, 2);
    ui.gridLayout->update();
}

void MainWindow::on_editStyleAction_triggered()
{
    styleSheetEditor->show();
    styleSheetEditor->activateWindow();
}

static SwitchButton* pBtn = nullptr;
void MainWindow::on_aboutAction_triggered()
{
    QFileDialog fd;
    fd.setOption(QFileDialog::DontUseNativeDialog, true);
    fd.exec();
    return;

    if (pBtn == nullptr)
    {
        QWidget* p = new QWidget();
        p->setGeometry(500, 500, 800, 400);
        pBtn = new SwitchButton(true, p);
        pBtn->move(100, 100);
        p->show();
    }
    

    m_btn->setProperty("switchOn", !m_btn->property("switchOn").toBool());
    QMessageBox::about(this, tr("About Style sheet"),
        tr("The <b>Style Sheet</b> example shows how widgets can be styled "
           "using <a href=\"http://doc.qt.io/qt-5/stylesheet.html\">Qt "
           "Style Sheets</a>. Click <b>File|Edit Style Sheet</b> to pop up the "
           "style editor, and either choose an existing style sheet or design "
           "your own."));
           
}

void MainWindow::on_slider_changed(int v)
{
    m_btn->m_scaleFactor = 1 + (v - 1) * 0.5;
    m_btn->updateGeometry();

    if (pBtn)
    {
        pBtn->m_scaleFactor = 1 + (v - 1) * 0.5;
        pBtn->resize(pBtn->sizeHint() * pBtn->m_scaleFactor);
    }
}
